#include <iostream>
using namespace std;

//概念：const_cast用于移除或添加const和volatile属性。
//注意，使用const_cast修改 原为常量的对象 是未定义行为，除非原对象不是常量
void print(char *str)
{
    cout<<str<<endl;
}

void basic_cast()
{
    const char *str = "hello world";

    // 错误，不能将const char *转换为char *
    // print(str);

    // 正确：使用const_cast移除const属性
    // 注意：const_cast只能用于移除const属性，不能用于添加const属性
    print(const_cast<char *>(str));

    // 但注意:尝试修改是未定义行为
    // char* temp =const cast<char*>(message);
    // temp[0]='h'; // 未定义行为!
}